//
//  DQTableController.m
//  DQBaisibudejie
//
//  Created by 杜倩 on 16/8/31.
//  Copyright © 2016年 杜倩. All rights reserved.
//我的界面点击设置按钮-弹出的界面

#import "DQTableController.h"
#import "UIBarButtonItem+buttonItem.h"
#import "SDImageCache.h"//导入缓存的文件
@interface DQTableController ()

@end

@implementation DQTableController
// 重写init方法  设置cell的分组--在TabelViewcontroller下面
-(instancetype)initWithStyle:(UITableViewStyle)style{
    if (self =[super initWithStyle:style]) {
        
        self=[super initWithStyle:UITableViewStyleGrouped];
    }
    return self;
}


- (void)viewDidLoad {
    [super viewDidLoad];
    [self addItem];
    //系统自带的可作参考--若带有音乐视频等缓存，需要自己写清除,方法为->self getCachesSize
    //运用第三方框架获取cache这个对象,并获取大小
    //getDiskCount---个数
    //要想在块里面修改外面的属性，需在外面的值加__block(专门在块里面改变块外面的值)
   NSUInteger size= [[SDImageCache sharedImageCache] getSize];
   //NSLog(@"%lu",size);//大小
    NSLog(@"%@",NSHomeDirectory());//获取沙盒路径
   // [self getCachesSize];//调用
    
    
    
}
#pragma mark--我的界面 --设置返回按钮的箭头及返回
-(void)addItem{
    UIButton *button=[UIButton buttonWithType:UIButtonTypeCustom];
    [button setTitle:@"返回" forState:UIControlStateNormal];
    
    [button setTitleColor:[UIColor blackColor] forState:UIControlStateNormal];
    
    [button setTitleColor:[UIColor redColor] forState:UIControlStateHighlighted];
    
    [button setImage:[UIImage imageNamed:@"navigationButtonReturn"] forState:UIControlStateNormal];
    
    [button setImage:[UIImage imageNamed:@"navigationButtonReturnClick"] forState:UIControlStateHighlighted];
    [button sizeToFit];
    //设置内边距---返回按钮距离左边的距离
    button.contentEdgeInsets=UIEdgeInsetsMake(0, -20, 0, 0);
    //点击事件
    [button addTarget:self action:@selector(goToBack) forControlEvents:UIControlEventTouchUpInside];
    UIBarButtonItem *item=[[UIBarButtonItem alloc] initWithCustomView:button];
    self.navigationItem.leftBarButtonItem=item;
    //NSLog(@"%@",self.navigationController.interactivePopGestureRecognizer);
    //第一种：手势被清空(验证是否存在-若输出的手势。。。。)  第二种可能性：有可能协议去做别的事情--通过协议去监听
    self.navigationController.interactivePopGestureRecognizer.delegate=nil;//代理清空不能实现页面的滑动，只能单击按钮
    self.navigationItem.title=@"设置";
    //设置（功能设置的）内边距-大小--2
    self.tableView.contentInset=UIEdgeInsetsMake(-25, 0, 0, 0);
    
}
#pragma Mark 按钮的单击事件
-(void)goToBack{
    [self.navigationController popViewControllerAnimated:YES];
}


#pragma mark 设置组数--我的设置按钮点击后出现的界面-2
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {

    return 2;
}
#pragma mark 设置行数-我的设置按钮点击后出现的界面-2
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
//数据为死，需判断
    if (section == 0) {
        return 2;//第一组的行数
    }else{
        return 7;//第二组的行数
    }
    
}

#pragma mark 设置cell分组的标题-2
-(NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section{
    //第一组两行各自的标题
    if (section == 0) {
        return @"功能设置";
    }else{
        return @"其它";
    }
    
}


#pragma mark 定义cell-2
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    static NSString *ID=@"cell";//无子标题
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:ID];
    if (cell== nil) {
        cell=[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:ID];
    }
    //设置cell单元格标题
    //第一组
    if (indexPath.section == 0) {
        //第一组的第一行
        if (indexPath.row == 0) {
            cell.textLabel.text=@"字体大小";
            UISegmentedControl *segment=[[UISegmentedControl alloc] initWithItems:@[@"小",@"中",@"大"]];//设置小中大的方块
        //只要赋值一个View
        cell.accessoryView = segment;
        }else{
          cell.textLabel.text=@"摇一摇夜间模式";
            UISwitch *switchs=[[UISwitch alloc] init];//设置开关控件
            cell.accessoryView = switchs;
        }
        
    }else{
      cell.textLabel.text=@"清除缓存";
        //计算缓存的大小--显示的格式为（清除缓存（23M））1MB=1000KB 1KB=1000B
        //获取沙河路径--caches
        NSString *cachesPath=[NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES)lastObject];
       NSUInteger pathSize = [self getCachesSizePath:cachesPath];//调用，传路径
        //拼接--显示文件的大小
        if (pathSize > 1000*1000 ) {
            cell.textLabel.text = [NSString stringWithFormat:@"清除缓存(%.2lfMB)",pathSize*1.0/1000/1000];
        }else if (pathSize > 1000){
            cell.textLabel.text = [NSString stringWithFormat:@"清除缓存(%.2lfKB)",pathSize*1.0/1000];
        }else{
            cell.textLabel.text = [NSString stringWithFormat:@"清除缓存(%ldB)",pathSize];
        }
        
    }
    //设置带有箭头的cell
    cell.accessoryType=UITableViewCellAccessoryDisclosureIndicator;
    
    
    
    return cell;
}
/****
 SD--清除的是照片
 
 数据存放到沙河里面
 Document
 Library:Caches(存放缓存)、preference-偏好设置
 temp:存放临时文件
 
 */

#pragma mark 清除缓存===把cache里面的文件删除
//想获取那个路径，传那个
-(NSInteger)getCachesSizePath:(NSString *)path{
    //首先获取沙盒路径
//    NSString *cachesPath=[NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES) lastObject];
//    //拼接路径
//    NSString *defaultPath=[cachesPath stringByAppendingPathComponent:@"default"];//
    
    
    //获取文件夹的属性--首先建立文件管理者
    NSFileManager *manager=[NSFileManager defaultManager];
    NSUInteger pathSize = 0;//定义一个接收大小的变量，并定义初始值为0
    //获取文件夹的属性-获取的是当前文件夹的大小
   //NSDictionary *dict = [manager attributesOfItemAtPath:defaultPath error:nil];
    //NSLog(@"%@",dict);//查看属性
    
    //------计算caches里面所有的缓存
    //subpathsAtPath-->获取路径下的所有子路径
  NSArray *array = [manager subpathsAtPath:path];//获取子路径
    //遍历所有的子路径--->为了拼接并获取去所有子路经的大小
    for (NSString *path1 in array) {
        //拼接路径
       NSString *detailPath = [path stringByAppendingPathComponent:path1];
        //求出每个文件的大小(fileSize)，实现累加和--即文件夹总的字节
        pathSize +=[manager attributesOfItemAtPath:detailPath error:nil].fileSize;
    }
    return pathSize;
    //NSLog(@"%ld",pathSize);
    //NSLog(@"%@",array);
}

#pragma mark 监听时间---点击"清除缓存"中的选中的某一行
-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{
    if (indexPath.section == 1 && indexPath.row == 0) {
        //清除缓存--就是删除caches文件夹里面的文件夹，而不是删除caches文件夹
            //  1、建立文件管理者
        NSFileManager *manager=[NSFileManager defaultManager];
            //2、删除文件
        //获取沙河文件
        NSString *cachesPath=[NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES)lastObject];
        //contentsOfDirectoryAtPath--只取当前的子路径  SubPath--所有路径
       NSArray *arrPath = [manager contentsOfDirectoryAtPath:cachesPath error:nil];
        NSLog(@"%@",arrPath);
        //遍历-
        for (NSString *path in arrPath) {
            //拼接路径
            
           NSString *detailPath = [cachesPath stringByAppendingPathComponent:path];
            
            //删除
            [manager removeItemAtPath:detailPath error:nil];
        }
        [self.tableView reloadData];//刷新数据
        NSLog(@"%@",NSHomeDirectory());
        
    }
}

@end
